public class selectSort {
    /**
     * 选择排序
     *  外层循环 定个位置
     *  内层循环一直往后面找有没有更小的数
     *  找到提取 当前的min val 到i位置 没找到原地换自己
     *
     * 重点  换的目标是max val
     *  关注的是  when find max
     *  一趟气泡排序结束，最大的被交换到了最后
     *  下一次  第二大的 换到 倒数第二
     * @param arr
     */
    public static void selectSort(int[] arr){
        //没有或者 只有一个 不用比
        if (arr==null|| arr.length<2){
            return;
        }
        for (int i = 0; i < arr.length-1; i++) {
            int minIdx =i;
            //j是i加1   是当前位置的后一个数去比，
            for (int j = i+1; j < arr.length; j++) {
                minIdx = arr[j]<arr[minIdx]?j:minIdx;
            }
            sortUtil.swap(arr,i,minIdx);
//            for (int j = 0; j < arr.length; j++) {
//                System.out.print(arr[j]);
//            }
//            System.out.println("minIdx --> " + minIdx);

//            int[]arr = new int[]{2,1,4,7,5,3,9,6,8};
//            124753968  i -->0  minIdx -->1    找到最小的1
//            124753968  i -->1  minIdx -->1    找到次小的2
//            123754968  i -->2  minIdx -->5    找老三
//            123457968  i -->3  minIdx -->5
//            123457968  i -->4  minIdx -->4
//            123456978  i -->5  minIdx -->7
//            123456798  i -->6  minIdx -->7
//            123456789  i -->7  minIdx -->8
        }
    }



    public static void main1(String[] args) {
        int testTime = 500000;
        int maxSize = 100;
        int maxValue = 100;
        boolean succeed = true;
        for (int i = 0; i < testTime; i++) {
            int[] arr1 = sortUtil.generateRandomArray(maxSize, maxValue);
            int[] arr2 = sortUtil.copyArray(arr1);
            selectSort(arr1);
            sortUtil.comparator(arr2);
            //不统一的时候打印两个数组
            if (!sortUtil.isEqual(arr1, arr2)) {
                succeed = false;
                sortUtil.printArray(arr1);
                sortUtil.printArray(arr2);
                break;
            }
        }
        System.out.println(succeed ? "Nice!" : "Fucking fucked!");
        int[] arr = sortUtil.generateRandomArray(maxSize, maxValue);
        //初始化的随机数据
        sortUtil.printArray(arr);
        selectSort(arr);
        //排序后的数据
        sortUtil.printArray(arr);
    }


}
